package com.dg11185.nearshop.app;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;

public class Utils {

    /**
     * 获取当前星期
     * 
     * @return 星期一返回1，星期二返回2，以此类推
     */
    public static int getWeek() {
        Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));
        int i = c.get(Calendar.DAY_OF_WEEK);
        if (i == 1)
            return 7;
        return i - 1;
    }

    /**
     * 获取当前日期
     * 
     * @param prefix
     *            前缀。例如"星期"、"周"
     * @return 星期一，星期二....或者周一，周二...
     */
    public static String getWeek(String prefix) {
        String week = "";
        int w = getWeek();
        switch (w) {
            case 1:
                week = prefix + "一";
                break;
            case 2:
                week = prefix + "二";
                break;
            case 3:
                week = prefix + "三";
                break;
            case 4:
                week = prefix + "四";
                break;
            case 5:
                week = prefix + "五";
                break;
            case 6:
                week = prefix + "六";
                break;
            case 7:
                week = prefix + "日";
                break;

        }

        return week;
    }

    /**
     * 获取当前时间
     * 
     * @param 时间格式
     * @return 按照时间格式返回当前时间
     */
    public static String getTime(SimpleDateFormat format) {
        Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));
        Date date = c.getTime();
        // SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日  HH:mm");
        return format.format(date);
    }

    /**
     * 判断一个字符串是否为空字符串
     * 
     * @param str
     *            字符串内容
     * @return
     */
    public static boolean isStrNull(String str) {
        if (str == null || str.trim().equals(""))
            return true;
        return false;
    }

    /**
     * 判断密码是否合法。
     * 
     * @param passwdStr
     * @return
     */
    public static boolean isPasswdValid(String passwdStr) {
        if (!checkPasswdStr(passwdStr).equals("OK"))
            return false;
        return true;
    }

    /**
     * 检测密码输入是否合法。如果合法，返回"OK",否则返回不合法原因.
     * 判断规则是密码不为空，并且是大于等于6位小于20位的字符组合，不能包含空格和中文。
     * 
     * @param passwdStr
     * @return
     */
    public static String checkPasswdStr(String passwdStr) {
        if (isStrNull(passwdStr)) {
            return "密码不能为空";
        }
        if (passwdStr.length() > passwdStr.trim().length()) {
            return "密码中不能包含空字符";
        }
        if (isContainChinese(passwdStr)) {
            return "密码中不能含有中文字符";
        }
        if (!isLengthValid(6, 20, passwdStr)) {
            return "密码必须大于6位小于20位";
        }

        return "OK";
    }

    /**
     * 判断一个字符串是否含有中文
     * 
     * @param str
     * @return
     */
    public static boolean isContainChinese(String str) {
        if (str.getBytes().length == str.length()) {
            return false;
        }
        return true;
    }

    /**
     * 检测一个字符串长度是否合法
     * 
     * @param min
     *            最小长度，不限制的话，传入-1
     * @param max
     *            最大长度，不限制的话，传入-1
     * @param str
     * @return
     */
    public static boolean isLengthValid(int min, int max, String str) {
        if (min < -1 || max < -1 || isStrNull(str))
            return false;
        int length = str.length();
        if (min == -1 && max == -1)
            return true;
        if (min == -1 && max > 0) {
            if (length <= max)
                return true;
        }
        if (max == -1) {
            if (length >= min)
                return true;
        }
        if (length >= min && length <= max)
            return true;
        return false;
    }

    public static boolean saveBitmap2File(Bitmap bmp, String filePath,
            String fileName) {
        CompressFormat format = Bitmap.CompressFormat.JPEG;
        int quality = 100;
        OutputStream stream = null;
        try {
            File file = new File(filePath);
            file.mkdirs();
            String fileAbsPath = filePath + fileName;
            stream = new FileOutputStream(fileAbsPath);
            if (bmp != null) {
                return bmp.compress(format, quality, stream);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                stream.flush();
                stream.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }

        return false;
    }

}
